/*
 * @Author: HuangYue
 * @Date: 2022-04-12 16:28:53
 * @LastEditors: HuangYue
 * @LastEditTime: 2022-05-12 13:26:38
 * @FilePath: /graduation/src/util/random.js
 * @Description:生成一些随机数据
 */

// 生成随机数字
export const randomNumber = (len = 1) => {
  let str = '';
  for (let i = 0; i < len; i++) {
    str += Math.floor(1 + Math.random() * 9);
  }
  return str;
};
// 生成大于等于13位的id
export const randomID = (len = 13) => {
  return (
    Date.now() +
    Number(
      Math.random()
        .toString()
        .slice(3, len + 3),
    )
  );
};
// 生成随机小写字母
export const randomLowerLetter = (len) => {
  const letters = 'abcdefghijklmnopqrstuvwxyz';
  let res = '';
  for (let i = 0; i < len; i++) {
    var n = Math.round(Math.random() * letters.length);
    res += letters[n];
  }
  return res;
};

// 生成随机大写字母
export const randomUpperLetter = (len) => {
  const letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  let res = '';
  for (let i = 0; i < len; i++) {
    var n = Math.round(Math.random() * letters.length);
    res += letters[n];
  }
  return res;
};

// 生成不区分大小写的字符串
export const randomLetter = (len) => {
  const letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  let res = '';
  for (let i = 0; i < len; i++) {
    var n = Math.round(Math.random() * letters.length);
    res += letters[n];
  }
  return res;
};

// 生成随机电话号码
export const randomPhoneNumber = () => {
  const prefixArray = new Array(
    '139',
    '138',
    '137',
    '136',
    '135',
    '134',
    '159',
    '158',
    '157',
    '150',
    '151',
    '152',
    '188',
    '187',
    '182',
    '183',
    '184',
    '178',
    '130',
    '131',
    '132',
    '156',
    '155',
    '186',
    '185',
    '176',
    '133',
    '153',
    '189',
    '180',
    '181',
    '177',
  );
  const i = parseInt(Math.random() * prefixArray.length);
  let prefix = prefixArray[i];
  for (var j = 0; j < 8; j++) {
    prefix += Math.floor(Math.random() * 10);
  }
  return prefix;
};

// 生成随机名字
export const randomName = () => {
  const familyNames = new Array(
    '赵',
    '钱',
    '孙',
    '李',
    '周',
    '吴',
    '郑',
    '王',
    '冯',
    '陈',
    '褚',
    '卫',
    '蒋',
    '沈',
    '韩',
    '杨',
    '朱',
    '秦',
    '尤',
    '许',
    '何',
    '吕',
    '施',
    '张',
    '孔',
    '曹',
    '严',
    '华',
    '金',
    '魏',
    '陶',
    '姜',
    '戚',
    '谢',
    '邹',
    '喻',
    '柏',
    '水',
    '窦',
    '章',
    '云',
    '苏',
    '潘',
    '葛',
    '奚',
    '范',
    '彭',
    '郎',
    '鲁',
    '韦',
    '昌',
    '马',
    '苗',
    '凤',
    '花',
    '方',
    '俞',
    '任',
    '袁',
    '柳',
    '酆',
    '鲍',
    '史',
    '唐',
    '费',
    '廉',
    '岑',
    '薛',
    '雷',
    '贺',
    '倪',
    '汤',
    '滕',
    '殷',
    '罗',
    '毕',
    '郝',
    '邬',
    '安',
    '常',
    '乐',
    '于',
    '时',
    '傅',
    '皮',
    '卞',
    '齐',
    '康',
    '伍',
    '余',
    '元',
    '卜',
    '顾',
    '孟',
    '平',
    '黄',
    '和',
    '穆',
    '萧',
    '尹',
  );
  const givenNames = new Array(
    '子璇',
    '淼',
    '国栋',
    '夫子',
    '瑞堂',
    '甜',
    '敏',
    '尚',
    '国贤',
    '贺祥',
    '晨涛',
    '昊轩',
    '易轩',
    '益辰',
    '益帆',
    '益冉',
    '瑾春',
    '瑾昆',
    '春齐',
    '杨',
    '文昊',
    '东东',
    '雄霖',
    '浩晨',
    '熙涵',
    '溶溶',
    '冰枫',
    '欣欣',
    '宜豪',
    '欣慧',
    '建政',
    '美欣',
    '淑慧',
    '文轩',
    '文杰',
    '欣源',
    '忠林',
    '榕润',
    '欣汝',
    '慧嘉',
    '新建',
    '建林',
    '亦菲',
    '林',
    '冰洁',
    '佳欣',
    '涵涵',
    '禹辰',
    '淳美',
    '泽惠',
    '伟洋',
    '涵越',
    '润丽',
    '翔',
    '淑华',
    '晶莹',
    '凌晶',
    '苒溪',
    '雨涵',
    '嘉怡',
    '佳毅',
    '子辰',
    '佳琪',
    '紫轩',
    '瑞辰',
    '昕蕊',
    '萌',
    '明远',
    '欣宜',
    '泽远',
    '欣怡',
    '佳怡',
    '佳惠',
    '晨茜',
    '晨璐',
    '运昊',
    '汝鑫',
    '淑君',
    '晶滢',
    '润莎',
    '榕汕',
    '佳钰',
    '佳玉',
    '晓庆',
    '一鸣',
    '语晨',
    '添池',
    '添昊',
    '雨泽',
    '雅晗',
    '雅涵',
    '清妍',
    '诗悦',
    '嘉乐',
    '晨涵',
    '天赫',
    '玥傲',
    '佳昊',
    '天昊',
    '萌萌',
    '若萌',
  );
  const i = parseInt(Math.random() * familyNames.length);
  const familyName = familyNames[i];
  const j = parseInt(Math.random() * givenNames.length);
  const givenName = givenNames[j];
  const name = familyName + givenName;
  return name;
};
// 生成随机身份证
export const randomIdcard = () => {
  var coefficientArray = [
    '7',
    '9',
    '10',
    '5',
    '8',
    '4',
    '2',
    '1',
    '6',
    '3',
    '7',
    '9',
    '10',
    '5',
    '8',
    '4',
    '2',
  ]; // 加权因子
  var lastNumberArray = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; // 校验码
  var address = '420101'; // 住址
  var birthday = '19810101'; // 生日
  var s =
    Math.floor(Math.random() * 10).toString() +
    Math.floor(Math.random() * 10).toString() +
    Math.floor(Math.random() * 10).toString();
  var array = (address + birthday + s).split('');
  var total = 0;
  for (let i in array) {
    total = total + parseInt(array[i]) * parseInt(coefficientArray[i]);
  }
  var lastNumber = lastNumberArray[parseInt(total % 11)];
  var id_no_String = address + birthday + s + lastNumber;
  return id_no_String;
};
// 生成随机用户昵称
// 第一个参数为你想生成的固定的文字开头比如: 云村村民xxxxx
// 第二个为你想生成出固定开头文字外的随机长度
export const randomNickname = (prefix = '', randomLength = 7) => {
  // 设置随机用户名
  // 用户名随机词典数组
  let nameArr = [
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 0],
    [
      'a',
      'b',
      'c',
      'd',
      'e',
      'f',
      'g',
      'h',
      'i',
      'g',
      'k',
      'l',
      'm',
      'n',
      'o',
      'p',
      'q',
      'r',
      's',
      't',
      'u',
      'v',
      'w',
      'x',
      'y',
      'z',
    ],
  ];
  // 随机名字字符串
  let name = prefix;
  // 循环遍历从用户词典中随机抽出一个
  for (var i = 0; i < randomLength; i++) {
    // 随机生成index
    let index = Math.floor(Math.random() * 2);
    let zm = nameArr[index][Math.floor(Math.random() * nameArr[index].length)];
    // 如果随机出的是英文字母
    if (index === 1) {
      // 则百分之50的概率变为大写
      if (Math.floor(Math.random() * 2) === 1) {
        zm = zm.toUpperCase();
      }
    }
    // 拼接进名字变量中
    name += zm;
  }
  // 将随机生成的名字返回
  return name;
};

export const randomNumberArray = (len = 10, count = 1) => {
  const arry = [];
  for (let index = 0; index < len; index++) {
    arry.push(Number(randomNumber(count)));
  }
  return arry;
};
